// 代码风格：
// 1. 错误先行
// 2. 减少嵌套
// 3. 拆分行为
// 4. 函数先调用后声明

/* **************************************************************************************************** */

// 修改前：

function pow(x, n) {
	if (n < 0) {
		alert("Negative 'n' not supported")
	} else {
		let result = 1

		for (let i = 0; i < n; i++) {
			result *= x
		}

		return result
	}
}

console.log(pow(2, 3)) // 8

/* **************************************************************************************************** */

// 修改后：

// *先调用（再最上面，通过函数名就可以直接提前知道该函数做了什么，而不用去查看内部逻辑）
console.log(pow(2, 3)) // 8

function pow(x, n) {
	// *错误先行（把错误检查放到前面）
	if (n < 0) {
		console.log('n 比 0 小')
		return
	}

	// *减少嵌套（这里去处了 else 嵌套）
	// *拆分行为（把求幂拆分成一个新的行为(函数)，一是好维护，二是方便复用）
	return getPow(x, n)
}

function getPow(x, n) {
	return x ** n
}
